spb/company-atlas
Public
Python 66.3%
TypeScript 22.7%
JavaScript 8.6%
HTML 1.4%
CSS 0.7%
1import type { Metadata } from 'next';2import { notFound } from 'next/navigation';3import { CompaniesModule, ConnectorsModule, CostsModule, FailuresModule, LlmModule, OverviewModule, QualityModule, QueueModule, ReviewsModule, SensorsModule } from '@/components/admin/modules';4import { ADMIN_MODULES } from '@/lib/admin-modules';5import { flat, str, type SP } from '@/lib/params';67export const metadata: Metadata = { title: 'Admin', robots: { index: false, follow: false } };8export const dynamic = 'force-dynamic';910export default async function AdminModulePage({ params, searchParams }: { params: Promise<{ module: string }>; searchParams: Promise<SP> }) {11 const { module } = await params;12 const sp = await searchParams;13 if (!ADMIN_MODULES.some((m) => m.id === module)) notFound();14 switch (module) {15 case 'connectors':16 return <ConnectorsModule />;17 case 'sensors':18 return <SensorsModule initial={Object.fromEntries(Object.entries(flat(sp)).filter(([, v]) => v !== undefined)) as Record<string, string>} />;19 case 'companies':20 return <CompaniesModule />;21 case 'failures':22 return <FailuresModule initialClass={str(sp.class)} />;23 case 'queue':24 return <QueueModule />;25 case 'llm':26 return <LlmModule />;27 case 'reviews':28 return <ReviewsModule />;29 case 'quality':30 return <QualityModule />;31 case 'costs':32 return <CostsModule />;33 default:34 return <OverviewModule />;35 }36}37